home *** CD-ROM | disk | FTP | other *** search
- /*
-
- MDWI
- MakeDir With Icon
- Septembre 1992
-
- © 1992 PERRINE bertrand, All Rights Reserved.
-
- NB : you must have OS 2.0 to use MDWI
-
- */
-
- #include <clib/exec_protos.h>
- #include <clib/dos_protos.h>
- #include <clib/icon_protos.h>
- #include <pragmas/exec_pragmas.h>
- #include <pragmas/dos_pragmas.h>
- #include <pragmas/icon_pragmas.h>
- #include <stdlib.h>
-
- /* prototypes des fonctions */
-
- void FaireIcone(void);
- void ErrIcone(void);
-
- int CXBRK(void) { return(0); } /* CTRL-C lattice inhibé */
- void chkabort(void) { return; }
-
- /* Bibliothéques */
-
- extern struct Library *SysBase; /* Bibliothèques ouvertes par le compilateur */
- extern struct Library *DOSBase;
-
- struct Library *IconBase = NULL;
-
- /* numéro de version */
-
- UBYTE ver[]="\0$VER: MakeDirWithIcon 1.0 (23.9.92)\0";
-
- /* variables globales */
-
- struct RDArgs *argclilu = NULL;
-
- UBYTE compte = 0; /* nombre d'arguments */
- UBYTE **repertoires; /* Array retournée par RDargs */
-
- /*****************
-
- Et voici El Code
-
- *****************/
-
-
- void main(void)
- {
-
- LONG args[2];
- LONG erreur;
- LONG status = 0;
- BPTR lelock;
-
- args[0] = NULL; /* Initialisation des arguments */
- args[1] = NULL;
-
- argclilu = ReadArgs("NAME/M,ICON/S", args, NULL); /* Merci le Dos qui fait le boulot tout seul */
-
- if (argclilu) /* test si RDArgs à été fourni */
- {
- if (args[0]) /* test l'existence d'arguments */
- {
- repertoires =(UBYTE **)args[0];
-
- while (repertoires[compte]) /* tant qu'il y a des arguments */
- {
-
- lelock = Lock(repertoires[compte], ACCESS_READ);
-
- if (lelock) /* le repertoire existant ? */
- {
- VPrintf( "%s already exists\n", (LONG *)&repertoires[compte]);
- status = 10;
- }
- else
- {
- lelock = CreateDir(repertoires[compte]);
-
- if(!lelock) /* création OK ? */
- {
- VPrintf( "Can't create directory %s\n", (LONG *)&repertoires[compte]);
- erreur = IoErr();
- PrintFault(erreur, NULL);
- status = 10;
- }
- else
- if (args[1]) /* création icones ? */
- FaireIcone();
- }
- UnLock(lelock);
- compte++; /* argumemt suivant */
- }
- }
- else
- {
- VPrintf( "No name given\n", NULL);
- status = 20;
- }
- FreeArgs(argclilu); /* libération de RDArgs */
- }
- else
- {
- erreur = IoErr();
- PrintFault(erreur, NULL);
- status = 20;
- }
-
- exit(status); /* on s'en va */
- }
-
-
- /********************************
-
- FaireIcone : comme son nom l'indique
-
- ********************************/
-
- void FaireIcone()
- {
-
- struct DiskObject *objeticone;
-
- IconBase = (struct Library *)OpenLibrary("icon.library",37L);
- if(IconBase)
- {
- objeticone = GetDefDiskObject(WBDRAWER); /* Obtention de l'icone par defaut du */
- if (objeticone)
- {
- if (!PutDiskObject(repertoires[compte], objeticone)) /*création de l'icone */
- ErrIcone();
-
- FreeDiskObject(objeticone);
- }
- else
- ErrIcone();
-
- CloseLibrary(IconBase);
- }
- else
- VPrintf("Can't create icon for %s\n Unable to open icon.library\n",(LONG *)&repertoires[compte]);
-
- }
-
- /********************************
-
- ErrIcone : Affichage de l'erreur produite lors de la création de l'icone
-
- ********************************/
-
- void ErrIcone()
- {
-
- LONG erricone;
-
- erricone = IoErr();
- VPrintf("Can't create icon for %s\n",(LONG *)&repertoires[compte]);
- PrintFault(erricone, NULL);
-
- }